/**************************************
 *
 * arrayUtil.js 存放数组工具函数
 * @version: 1.0.0
 * @author: 王嘉庆
 *
 **************************************/
 export default {
    /**
     * 求数组内数值成员的平均值，非数值将被排除
     * @param {Array} arr 
     * @returns 
     */
    average(arr) {
        var sum = 0
        var i = 0
        var k = 0
        var l = arr.length
        for (; i < l; i++) {
            if (typeof arr[i] === 'number') {
                sum += parseFloat(arr[i])
                k++
            }
        }
        return (sum * 1.0) / (k * 1.0)
    },
    /**
     * 数组求和          
     * @param {Array} arr 
     * @returns 
     */
    sum(arr){
        return arr.reduce(function(prev, curr, idx, arr){
            return prev + curr;
        });
    },
    /**
     * 统计数组中一个元素出现的次数，使用 === 盘点
     * @param {Array} arr 数组
     * @param {*} o 
     * @returns 
     */
    count(arr,o){
        var s = 0
        var i = 0
        var l = arr.length
        for (; i < l; i++) {
            arr[i] === o ? s++ : 0
        }
        return s
    },
    /**
     * 获取数组的第一个匹配元素或返回null
     * @param {Array} arr 数组    
     * @param {Function} predicate 
     */
    firstOrNull(arr,predicate){
        arr = arr.filter(predicate);
        if(arr.length > 0) return arr[0];
        return null
    }
}
